home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / comp0_89.lha / Feel / Boot / Compiler / i-macros.em < prev    next >
Text File  |  1993-07-03  |  805b  |  35 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: byte-macros.em
  4. ;; Date: Sun Jan 19 21:17:38 1992
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;    Macro to make defining instructions a breeze
  9.  
  10. (defmodule i-macros
  11.   (standard0
  12.    list-fns
  13.    scan-args
  14.    )
  15.   ()
  16.   
  17.   (defmacro definstruction (name number . props)
  18.     (let ((xx (scan-args 'nargs props 0))
  19.       (iname (make-symbol (format nil "~a-info" name))))
  20.       `(progn (defconstant ,iname (make-instruction 'name ',name 'nargs ,xx
  21.                             'bytecode ,number 
  22.                             ,@(mapcar (lambda (x) (list 'quote x))
  23.                                   props)))
  24.           (defconstant ,name 
  25.         (lambda (x)
  26.           (make-instance instruction 'info ,iname 
  27.                  'args (convert x <vector>))))
  28.           (add-instruction ',name ,name)
  29.           (export ,iname ,name))))
  30.  
  31.  
  32.   (export definstruction)
  33.   ;; end module
  34.   )
  35.